import { getInfo, setInfo } from '@/utils/storage'
/**
 * 导出一个默认的 Vuex 模块，用于管理用户信息的状态。
 * 该模块被配置为一个命名空间内的模块，意味着它的状态、突变和行为将在特定的命名空间内作用。
 * 这有助于在大型应用程序中组织和管理状态。
 * @namespace true 声明该模块是一个命名空间模块
 * @state 初始化用户信息的状态，包括用户的 token 和 userId
 * @mutations 该模块不定义任何突变操作，可以在后续扩展中添加
 * @actions 该模块不定义任何异步操作或触发突变的行为，可以在后续扩展中添加
 */
export default {
  namespaced: true,
  state () {
    return {
      userInfo: getInfo()
    }
  },
  mutations: {
    setUserInfo (state, obj) {
      state.userInfo = obj
      setInfo(obj)
    }
  },
  actions: {
    logout (context) {
      context.commit('setUserInfo', {})
      context.commit('cart/setCartList', [], { root: true })
    }
  },
  getters: {}
}
